package com.kmxd.ams.core.util;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Maps;
import java.awt.*;
import java.util.Date;
import java.util.Map;
import javax.swing.*;
import lombok.extern.slf4j.Slf4j;

/**
 * 水印工具
 *
 * @author nickbi
 */
@Slf4j
public class WatermarkUtil {

  private static final int INTERVAL = -5;

  /**
   * 添加图片水印
   *
   * @param srcFile 文件
   * @param destFile 存储路径
   * @param text 文本内容
   * @param opacity 透明度
   * @param angle 倾斜度
   * @param fontsize 字体大小
   */
  public static void addPdfWatermark(
          String srcFile, String destFile, String text, double opacity, double angle, int fontsize) {

  }

  /**
   * 添加图片水印
   *
   * @param srcFile 文件
   * @param destFile 存储路径
   * @param text 文本内容
   * @param opacity 透明度
   * @param angle 倾斜度
   * @param fontsize 字体大小
   * @param imageFile 水印图片
   * @param x 图片坐标x
   * @param y 图片坐标y
   * @param imageAngle 图片倾斜度
   */
  public static void addPdfWatermark(
          String srcFile,
          String destFile,
          String text,
          double opacity,
          double angle,
          int fontsize,
          String imageFile,
          int x,
          int y,
          double imageAngle) {

  }

  /**
   * 动态水印格式化
   *
   * @param text 动态水印内容
   * @return
   */
  public static String format(String text) {
    Map<String, Object> map = getDefaultInfo();
    return StrUtil.format(text, map);
  }

  public static String findFonts() {
    return "fonts/simfang.ttf";
  }

  /**
   * 动态水印格式化
   *
   * @param source 数据信息
   * @param text 动态水印格式
   * @return 格式化字符串
   */
  public static String format(Object source, String text) {
    Map<String, Object> map = BeanUtil.beanToMap(source);
    map.putAll(getDefaultInfo());
    return StrUtil.format(text, map);
  }

  /**
   * 默认动态信息
   *
   * @return map
   */
  public static Map<String, Object> getDefaultInfo() {
    Map<String, Object> map = Maps.newHashMap();
    map.put("year", DateUtil.year(new Date()));
    map.put("deptName", SecurityUtil.getLoginUser().getDeptName());
    map.put("deptId", SecurityUtil.getLoginUser().getDeptId());
    map.put("userId", SecurityUtil.getUserId());
    map.put("username", SecurityUtil.getUsername());
    map.put("date", DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN));
    return map;
  }
}
